home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************
- * *
- * Scrap directory routines *
- * by Christian Grunenberg *
- * *
- * Copied from E_GEM 1.3 *
- * Copyright (C) 1993, Christian Grunenberg *
- * *
- ********************************************************************/
-
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <tos.h>
- #include "winlib.h"
-
- LOCAL char *strmfp(char *dest,char *path,char *file)
- {
- register char *last;
- register int len;
-
- if (path)
- strcpy(dest,path);
-
- if ((len = (int) strlen(dest))>0)
- {
- last = dest + len - 1;
- if (*last!='\\')
- {
- *++last = '\\';
- *++last = '\0';
- }
- }
-
- return(strcat(dest,file));
- }
-
- GLOBAL int scrp_init(char *path)
- {
- register char scrap[256];
- register long handle,len;
-
- scrp_read(scrap);
- if (scrap[0]=='\0')
- {
- if (path)
- strcpy(scrap,path);
- else if ((path = getenv("CLIPBRD"))!=NULL || (path = getenv("SCRAPDIR"))!=NULL)
- strcpy(scrap,path);
- else
- {
- register long ssp;
-
- strcpy(scrap,"X:\\CLIPBRD");
- ssp = Super(NULL);
- *scrap = (char) (*((int *) 0x446)+65);
- Super((void *) ssp);
- }
- }
-
- if ((len = strlen(scrap))>0)
- {
- len--;
- if (scrap[len]=='\\')
- scrap[len]='\0';
-
- handle = Dcreate(scrap);
- if (handle>=0 || handle==-36)
- {
- scrp_write(strcat(scrap,"\\"));
- return(TRUE);
- }
- }
-
- scrp_write("");
- return(FALSE);
- }
-
- GLOBAL void scrp_clear()
- {
- register char scrap[256];
-
- scrp_read(scrap);
- if (scrap[0]!='\0')
- {
- register DTA *dta=Fgetdta();
- register char xpath[256],xname[256];
-
- strmfp(xpath,scrap,"SCRAP.*");
- if (!Fsfirst(xpath,0))
- do
- {
- strmfp(xname,scrap,dta->d_fname);
- remove(xname);
- }
- while (!Fsnext());
- }
- }
-
- GLOBAL int scrp_length()
- {
- register char scrap[256];
-
- scrp_read(scrap);
- if (scrap[0]!='\0')
- {
- register DTA *dta=Fgetdta();
- register char xpath[256];
-
- strmfp(xpath,scrap,"SCRAP.*");
- if (!Fsfirst(xpath,0))
- {
- register long length = 0;
- do
- length += dta->d_length;
- while (!Fsnext());
- return ((int) ((length+512)>>10));
- }
- }
-
- return (0);
- }
-
- GLOBAL int scrp_find(char *extension,char *filename)
- {
- register char scrap[256];
-
- scrp_read(scrap);
- if (scrap[0]!='\0')
- {
- register DTA *dta=Fgetdta();
- register char xpath[256];
- register int c = 0;
-
- strcat(strmfp(xpath,scrap,"SCRAP."),extension);
- if(!Fsfirst(xpath,0))
- {
- c++;
- strmfp(filename,scrap,dta->d_fname);
- while (!Fsnext()) c++;
- return (c);
- }
- }
- return (0);
- }